#!/bin/bash

# Проверка прав root
if [ "$(id -u)" != "0" ]; then
    echo "Запустите скрипт с правами root: sudo $0"
    exit 1
fi

# Зависимости: bluez, bluez-tools, dialog
DEPENDENCIES=("bluetoothctl" "dialog")
for dep in "${DEPENDENCIES[@]}"; do
    if ! command -v $dep &> /dev/null; then
        echo "Установите $dep: sudo apt install bluez dialog"
        exit 1
    fi
done

# Основное меню
main_menu() {
    while true; do
        choice=$(dialog --title "Управление Bluetooth" --menu "Выберите действие:" 15 50 5 \
            1 "Поиск устройств" \
            2 "Сопряженные устройства" \
            3 "Включить Bluetooth" \
            4 "Выключить Bluetooth" \
            0 "Выход" 3>&1 1>&2 2>&3)
        
        case $choice in
            1) scan_devices ;;
            2) paired_devices ;;
            3) enable_bluetooth ;;
            4) disable_bluetooth ;;
            0) clear; exit 0 ;;
            *) clear; exit 1 ;;
        esac
    done
}

# Поиск устройств
scan_devices() {
    (
        echo "10" ; sleep 1
        echo "Начато сканирование..."
        bluetoothctl --timeout 15 scan on > /dev/null
        echo "100" ; sleep 1
    ) | dialog --title "Сканирование" --gauge "Пожалуйста, подождите..." 10 50 0
    
    devices=$(bluetoothctl devices | awk '{print $2 " " $3}')
    devices_list=()
    while read -r line; do
        devices_list+=("$line" "")
    done <<< "$devices"
    
    device=$(dialog --title "Найденные устройства" --menu "Выберите устройство:" 15 50 5 "${devices_list[@]}" 3>&1 1>&2 2>&3)
    [ -z "$device" ] && return
    
    mac=${device:0:17}
    device_menu "$mac"
}

# Меню управления устройством
device_menu() {
    mac=$1
    while true; do
        choice=$(dialog --title "Управление устройством" --menu "MAC: $mac" 15 50 5 \
            1 "Сопряжение" \
            2 "Подключение" \
            3 "Доверие" \
            4 "Удалить" \
            0 "Назад" 3>&1 1>&2 2>&3)
        
        case $choice in
            1) bluetoothctl --timeout 15 pair "$mac" | dialog --progressbox "Сопряжение..." 15 50 ;;
            2) bluetoothctl --timeout 15 connect "$mac" | dialog --progressbox "Подключение..." 15 50 ;;
            3) bluetoothctl trust "$mac" | dialog --progressbox "Доверие..." 15 50 ;;
            4) bluetoothctl remove "$mac" | dialog --progressbox "Удаление..." 15 50 ;;
            0) break ;;
        esac
    done
}

# Список сопряженных устройств
paired_devices() {
    devices=$(bluetoothctl paired-devices | awk '{print $2 " " $3}')
    devices_list=()
    while read -r line; do
        devices_list+=("$line" "")
    done <<< "$devices"
    
    device=$(dialog --title "Сопряженные устройства" --menu "Выберите устройство:" 15 50 5 "${devices_list[@]}" 3>&1 1>&2 2>&3)
    [ -z "$device" ] && return
    
    mac=${device:0:17}
    device_menu "$mac"
}

enable_bluetooth() {
    bluetoothctl power on | dialog --progressbox "Включение Bluetooth..." 15 50
}

disable_bluetooth() {
    bluetoothctl power off | dialog --progressbox "Выключение Bluetooth..." 15 50
}

# Запуск
clear
main_menu
